Conversation
There was a problem hiding this comment.
Pull request overview
This pull request updates the TypeScript SDK from version 1.11.8 to 1.15.0, along with related tooling updates including TypeScript 5.9.3, Node.js 24, and ESLint 9 with a new flat configuration format. The changes include necessary code style updates to comply with the new linting rules and type changes required by the SDK upgrade.
Changes:
- Updated all
@temporaliopackages from 1.11.8 to 1.15.0 - Migrated from ESLint 7 (.eslintrc) to ESLint 9 (flat config with eslint.config.mjs)
- Updated TypeScript from 5.8.3 to 5.9.3, Node.js from 16 to 24, and related tooling
- Applied code style fixes including strict equality operators (=== instead of ==), import ordering, and trailing commas
- Updated TLS configuration to use Uint8Array instead of Buffer
- Changed feature loading from synchronous require() to async import()
- Added ReplaceNested utility type for type-safe serialization in http_proxy features
Reviewed changes
Copilot reviewed 41 out of 44 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| package.json | Updated all @temporalio dependencies to 1.15.0, upgraded dev dependencies including ESLint, TypeScript, and related tooling |
| tsconfig.json | Updated to extend @tsconfig/node24 and TypeScript version 5.9.3, removed trailing newline |
| sdkbuild/typescript.go | Updated TypeScript and Node dependencies in generated package.json |
| eslint.config.mjs | New ESLint 9 flat config with comprehensive rules including import ordering, strict equality, and TypeScript-specific rules |
| .eslintrc | Removed old ESLint configuration file |
| .github/workflows/typescript.yaml | Updated Node.js version from 18 to 24 |
| .gitignore | Added features.sln to ignore .NET solution files |
| harness/ts/type-helpers.ts | Added ReplaceNested utility type for nested type replacement |
| harness/ts/main.ts | Reordered imports, wrapped TLS certificate buffers in Uint8Array |
| harness/ts/harness.ts | Reordered imports, changed loadFeature to async with dynamic import(), added ReplaceNested export, updated trailing commas |
| harness/ts/activity-interceptors.ts | Reformatted constructor parameters with proper line breaks |
| features/client/http_proxy_auth/feature.ts | Added ReplaceNested type usage, improved TLS serialization handling including serverNameOverride and serverRootCACertificate |
| features/client/http_proxy/feature.ts | Added ReplaceNested type usage, updated TLS serialization with Uint8Array conversion |
| features/update/*/feature.ts | Applied import reordering and strict equality operators |
| features/signal/*/feature.ts | Applied import reordering and strict equality operators |
| features/schedule/*/feature.ts | Applied import reordering and strict equality operators |
| features/query/*/feature.ts | Applied import reordering |
| features/data_converter/*/feature.ts | Applied import reordering, strict equality, unused variable naming convention |
| features/continue_as_new/continue_as_same/feature.ts | Applied strict equality operators |
| features/child_workflow/result/feature.ts | Applied import reordering |
| features/activity/*/feature.ts | Applied import reordering, strict equality, removed empty function eslint disables |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 41 out of 44 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 41 out of 44 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| const child = fork(__filename, { | ||
| env: { | ||
| ...process.env, | ||
| grpc_proxy: proxyUrl, | ||
| subprocess_opts: JSON.stringify(subprocessOpts), | ||
| }, | ||
| execArgv: ['-r', 'tsconfig-paths/register', __filename], | ||
| }); | ||
| child.on('exit', (code) => { |
There was a problem hiding this comment.
fork(__filename, { execArgv: ['-r', 'tsconfig-paths/register', __filename] }) passes __filename as a Node exec argument, which makes the child process treat it as the script to execute and leaves the modulePath passed to fork as a normal argv value. This is brittle/confusing and can break if the module path ever changes. Drop __filename from execArgv and, if you need to pass extra args, use the args parameter to fork.
| const child = fork(__filename, { | ||
| env: { | ||
| ...process.env, | ||
| grpc_proxy: proxyUrl, | ||
| subprocess_opts: JSON.stringify(subprocessOpts), | ||
| }, | ||
| execArgv: ['-r', 'tsconfig-paths/register', __filename], | ||
| }); | ||
| child.on('exit', (code) => { |
There was a problem hiding this comment.
fork(__filename, { execArgv: ['-r', 'tsconfig-paths/register', __filename] }) passes __filename as a Node exec argument, which causes the child to execute the script from execArgv instead of the modulePath argument. This is fragile and hard to reason about. Remove __filename from execArgv (keep only the -r tsconfig-paths/register preload) and pass any script arguments via fork’s args array instead.
What changed